package me.alex.learnkotlin.learnKT2

/**
 * 继承Person类
 * 继承的关键字是冒号
 * 逗号后面是接口 相当于implements
 */
/*
把参数写在括号里表示这是主构造函数
 */
class Student(sno: String, grade: Int, name: String, age: Int) : Person(name, age), Study {
    //    var sno = ""//年级
//    var grade = 0//学号
    var teacherName = ""//老师姓名

    //init方法是Kotlin提供的结构体,所有主构造函数中的逻辑都可以写在这里
    init {
        println("调用4参数构造")
        println("sno is $sno")
        println("grade is $grade")
        teacherName = "Alex"//这里也可以做初始化和逻辑操作
        println("teacherName is $teacherName")
    }

    //Kotlin中次构造函数必须调用主构造函数
    //2参数的构造函数
    constructor(name: String, age: Int) : this("", 0, name, age) {
        println("调用2参构造函数")
    }

    //0参构造参数 调用2参构造函数
    constructor() : this("", 0) {
        println("调用2参构造函数")
    }

    override fun readBooks() {
        println("$name 正在读书")
    }

    //因为接口中有默认实现,所以删除也没关系
//    override fun doHomeWork() {
//        println("$name 正在做家庭作业")
//    }
}